package com.ruoyi.attendance.mapper;

import java.util.List;
import com.ruoyi.attendance.domain.SignInfoView;
import com.ruoyi.common.core.domain.entity.SysDictData;
import org.apache.ibatis.annotations.Select;

/**
 * 考勤记录Mapper接口
 * 
 * @author Weiney
 * @date 2025-04-12
 */
public interface SignInfoViewMapper 
{
    /**
     * 查询考勤记录
     * 
     * @param signId 考勤记录主键
     * @return 考勤记录
     */
    public SignInfoView selectSignInfoViewBySignId(Long signId);

    /**
     * 查询考勤记录列表
     * 
     * @param signInfoView 考勤记录
     * @return 考勤记录集合
     */
    public List<SignInfoView> selectSignInfoViewList(SignInfoView signInfoView);

    /**
     * 考勤信息统计
     *
     * @param signInfoView 考勤记录
     * @return 考勤记录集合
     */
    public List<SignInfoView> selectSignStatistic(SignInfoView signInfoView);

    /**
     * 查询本人考勤记录列表
     *
     * @param signInfoView 考勤记录
     * @return 考勤记录集合
     */
    public List<SignInfoView> selectSignInfoViewListForOwn(SignInfoView signInfoView);

    /**
     * 签到时查询自己的考勤记录列表
     *
     * @param signInfoView 考勤记录
     * @return 考勤记录集合
     */
    public List<SignInfoView> selectOwnSignInfoList(SignInfoView signInfoView);

    @Select("SELECT dict_label AS dictLabel, dict_value AS dictValue FROM sys_dict_data WHERE dict_type = 'sign_field';")
    List<SysDictData> selectAttendanceTimeRange();

    /**
     * 新增考勤记录
     * 
     * @param signInfoView 考勤记录
     * @return 结果
     */
    public int insertSignInfoView(SignInfoView signInfoView);

    /**
     * 修改考勤记录
     * 
     * @param signInfoView 考勤记录
     * @return 结果
     */
    public int updateSignInfoView(SignInfoView signInfoView);

    /**
     * 删除考勤记录
     * 
     * @param signId 考勤记录主键
     * @return 结果
     */
    public int deleteSignInfoViewBySignId(Long signId);

    /**
     * 批量删除考勤记录
     * 
     * @param signIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSignInfoViewBySignIds(Long[] signIds);
}
